package com.example.duihua.service;

import com.example.duihua.entity.Conversation;
import java.util.List;

public interface ConversationService {
    
    /**
     * 获取用户的所有会话列表
     * @param userId 用户ID
     * @return 会话列表
     */
    List<Conversation> getUserConversations(Long userId);
    
    /**
     * 创建或更新会话
     * @param conversation 会话对象
     * @return 更新后的会话
     */
    Conversation saveOrUpdate(Conversation conversation);
    
    /**
     * 根据ID和用户ID获取会话
     * @param id 会话ID
     * @param userId 用户ID
     * @return 会话对象
     */
    Conversation findByIdAndUserId(String id, Long userId);
    
    /**
     * 根据用户ID和目标用户ID获取私聊会话
     * @param userId 当前用户ID
     * @param targetId 目标用户ID
     * @return 会话对象
     */
    Conversation findPrivateConversation(Long userId, Long targetId);
    
    /**
     * 根据用户ID和群组ID获取群聊会话
     * @param userId 用户ID
     * @param groupId 群组ID
     * @return 会话对象
     */
    Conversation findGroupConversation(Long userId, Long groupId);
    
    /**
     * 删除会话
     * @param id 会话ID
     * @param userId 用户ID（确保只能删除自己的会话）
     * @return 是否删除成功
     */
    boolean deleteConversation(String id, Long userId);
    
    /**
     * 更新会话未读消息数量
     * @param id 会话ID
     * @param userId 用户ID
     * @param count 未读数量
     * @return 是否更新成功
     */
    boolean updateUnreadCount(String id, Long userId, int count);
    
    /**
     * 重置会话未读消息数量
     * @param id 会话ID
     * @param userId 用户ID
     * @return 是否重置成功
     */
    boolean resetUnreadCount(String id, Long userId);
}
